package com.mmy.dao.train;

import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.train.TTrainBase;

public interface TrainBaseRepository extends JpaRepository<TTrainBase, Integer> {

	/**
	 * 获取最大值ID
	 * 
	 * @return 返回值说明 最大ID
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.17
	 */
	@Query(value = "SELECT MAX(iTrainID) FROM tTrainBase WHERE LEFT(iTrainID,2) = RIGHT(YEAR(NOW()),2)", nativeQuery = true)
	Object getMaxTrainID();

	/**
	 * 后台专列信息管理中 创建
	 *
	 * @author 创建人hanxl
	 * @date 创建日期2021.03.17
	 */

	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tTrainBase(iTrainID, cTrainName, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5) VALUES (:trainID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)", nativeQuery = true)
	void save(@Param("trainID") int trainID);

	/*
	 * 根据id删除
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tTrainBase where tTrainBase.iTrainID in (:lstTrainID)", nativeQuery = true)
	void delTrainBase(@Param("lstTrainID") List<Integer> lstTrainID);

	/**
	 * 函数功能说明：根据id查找
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.16
	 */
	@Query(value = "select *  from tTrainBase where iTrainID = :iTrainID", nativeQuery = true)
	TTrainBase findByTrainID(@Param("iTrainID") int iTrainID);

	/*
	 * 根据name查找
	 */
	@Query(value = "select *  from tTrainBase where cTrainName like %:strTrainName%", nativeQuery = true)
	List<TTrainBase> findByName(@Param("strTrainName") String strTrainName);

	/*
	 * 根据id查找
	 */
	@Query(value = "select *  from tTrainBase where iTrainID = :iTrainID", nativeQuery = true)
	TTrainBase findByID(@Param("iTrainID") int iTrainID);

	/**
	 * 后台专列信息管理中超级管理员登录显示所有航班信息
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间 2021.03.17
	 */
	@Query(value = "select * from tTrainBase where (:strTrainName = \"\" or cTrainName like %:strTrainName%)  limit :startIndex,:count", nativeQuery = true)
	List<TTrainBase> findSearchALL(@Param("strTrainName") String strTrainName, @Param("startIndex") int startIndex,
			@Param("count") int count);

	/**
	 * 后台航班信息管理中超级管理员登录显示所有公司的航班信息 获取分页
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间 2021.02.22
	 */
	@Query(value = "select count(*)  from tTrainBase where (:strTrainName = \"\" or cTrainName like %:strTrainName%)", nativeQuery = true)
	int countALL(@Param("strTrainName") String strTrainName);

}
